Edelaraudtee connects Viljandi to Tallinn - the trains run twice a day.
Viljandi has a regular bus connection to Tallinn, Tartu, Valga and Pärnu among others. Bus schedules can be found at Bussireised.